<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF_8">
    <title>回顾es6中的扩展运算符...</title>
</head>

<body>
    <script>
        let arr = [1, 2, 3, 34, 5, 6, 6, 6]
        // 把数组两边的中括号脱掉
        console.log(...arr)

        let o1 = { x: 1, y: 1 }
        // ...o1 表示把 o1 对象上的 {} 脱掉
        console.log(...o1) //语法错误

        // 脱掉之后再穿上，生成一个全新的对象
        let o2 = { ...o1 }

        console.log(o1 === o2) // false

        // 如果...扩展运算符使用在对象上，一般用于对象属性的合并
        let o3 = { x: 1, y: 1 }
        let o4 = { k: 1, f: 1 }
        let o5 = { m: 1, n: 1 }

        // 以上的o3、o4、o5对象中所有的属性全部合并，生成一个全新的对象
        let o6 = { ...o3, ...o4, ...o5 }
        console.log(o6)

        let o7 = { x: 1, y: 1 }
        let o8 = {
            k: 1,
            ...o7,
            f: 1
        }

        console.log(o8)
    </script>
</body>

</html>